﻿using SSC.Models;
using System.Collections.Generic;

namespace SSC.Services
{
    /// <summary>
    /// 全局产品管理器：用于追踪管理所有当前在系统中的产品
    /// </summary>
    public class ProductManager
    {
        // 单例实现
        private static ProductManager? _instance;
        public static ProductManager Instance => _instance ??= new ProductManager();

        // 内部存储：键为Pcode
        private readonly Dictionary<string, ProductModel> _productDict = new();

        private ProductManager() { }

        /// <summary>
        /// 添加产品模型（如果 Pcode 唯一）
        /// </summary>
        public bool AddProduct(ProductModel product)
        {
            if (!_productDict.ContainsKey(product.Pcode))
            {
                _productDict[product.Pcode] = product;
                return true;
            }
            return false; // 重复Pcode不添加
        }

        /// <summary>
        /// 检查某个 Pcode 是否已存在
        /// </summary>
        public bool ContainsPcode(string pcode) => _productDict.ContainsKey(pcode);

        /// <summary>
        /// 根据 Pcode 获取产品
        /// </summary>
        public ProductModel? GetProductByPcode(string pcode)
        {
            return _productDict.TryGetValue(pcode, out var product) ? product : null;
        }

        /// <summary>
        /// 删除某个产品（下料完成后可移除）
        /// </summary>
        public void RemoveProduct(string pcode)
        {
            _productDict.Remove(pcode);
        }

        /// <summary>
        /// 获取当前所有产品模型（比如用于展示）
        /// </summary>
        public IEnumerable<ProductModel> GetAllProducts() => _productDict.Values;
    }
}
